import axios from 'axios'
import local from '@/utils/local.js' // 获取本地的token
import { stringify } from 'qs' // 引入qs模块，用来序列化post类型的
import NProgress from 'nprogress' // 进度条
import 'nprogress/nprogress.css'

import { success, error } from '../utils/hint'
/* 配置 baseURL  */
axios.defaults.baseURL = 'http://localhost:5000'
/* 设置5000ms没发出去就报错 */
axios.defaults.timeout = 5000

// 路由白名单 不需要token的网页
const whiteList = ['/login']

// 添加请求拦截器
axios.interceptors.request.use(
  // 在发送请求之前做些什么
  config => {
    NProgress.start() // 进度条
    const token = local.get('token')
    if (!whiteList.includes(config.url) && token) {
      config.headers.Authorization = token
    }
    return config
  },
  // 对请求错误做些什么
  error => {
    return Promise.reject(error)
  }
)

// 添加响应拦截器
axios.interceptors.response.use(
  // 对响应数据做点什么
  response => {
    NProgress.done() // 进度条
    /* 有没有code */
    if (response.data.code !== undefined) {
      if (response.data.code === 0 || response.data.code === '00') {
        success(response.data.msg)
      } else {
        error(response.data.msg)
      }
    }
    return response.data
  },
  // 对响应错误做点什么
  error => {
    return Promise.reject(error)
  }
)

// 简单处理请求
export default {
  /* get请求 */
  get(url, params) {
    return new Promise((resolve, reject) => {
      axios
        .get(url, { params })
        .then(res => {
          resolve(res)
        })
        .catch(err => {
          console.log(err)
        })
    })
  },
  /* post请求 */
  post(url, query) {
    return new Promise((resolve, reject) => {
      axios
        .post(url, stringify(query)) // 需要序列化post类型
        .then(res => {
          resolve(res)
        })
        .catch(err => {
          console.log(err)
        })
    })
  }
}
